全部文档

9.1路由实例

针对设备上报数据,提供标准的数据转发功能,数据将转发到用户自定义的路由目的地端点,同时支持数据加密、压缩、和格式转化。该功能简化了设备数据存储流程,丰富的数据处理方式有利于对数据做二次功能开发。

9.1.1新增路由实例

功能描述:在物联网平台上新建一个路由实例,返回该路由的ID。

POST  /api/v1/routers

Body:

Name Type Description Required
name string 客户端名称 Yes
env int 执行环境,1:云端 Yes
type int 客户端类型 (1:标准数据转发/ 2:规则引擎配置类型/ 3:数据分析配置类型),规则引擎和数据分析配置类型表示此路由实例将被规则引擎和数据分析使用。 Yes
addressType int 转发方式(1:REST / 2:MQTT / 3:KAFKA / 4:MYSQL / 6:ONENET / 7:SQL Server) Yes
addressConfigId int 目的地配置ID, 参考 目的地配置 Yes
format int 数据格式(1:JSON / 2:XML/ 3:SERIALIZED / 4:CSV),MYSQL和ONENET的转发方式仅支持JSON Yes
encryption struct 加密规则结构体,详情见下方表格(MYSQL和ONENET的转发方式不支持加密) No
compression int 数据压缩方式(1:NONE / 2:GZIP / 3:ZIP),MYSQL和ONENET的转发方式不支持压缩 No
filter struct 过滤器结构体,只支持type为标准数据转发类型。 No, type为标准数据转发类型时必须。

Body filter结构体:

Name Type Description Required
devIdentifiers struct[] 过滤规则结构体 Yes

Body filter devIdentifiers结构体:

Name Type Description Required
pid string 产品ID的字符串 Yes
deviceMap map key是deviceId,value设备名称 Yes
valueDescriptorIdentifiers string[] 需过滤的属性名(必须首先设置设备ID) No(无值则默认为全部属性)
identifierType int 标识符类型(0:属性、1:事件) No(无该字段,则默认为0)

Body encryption结构体:

Name Type Description Required
encryptionAlgorithm int 加密方式(1:NONE / 2:AES), 目前只支持AES, NONE表示不加密。 Yes
encryptionKey string AES加密Key No,AES加密时必须
initializingVector string 初始化向量 No

Body example:

实例类型为STANDARD(type=1)、转发方式为REST(addressType=1)时如下,其他转发方式只需更改addressType和addressConfigId即可:
{
    "name": "zs_test",
    "env": 2,
    "type": 1,
    "addressType": 4,
    "addressConfigId": 36,
    "format": 1,
    "encryption": {
        "encryptionAlgorithm": 2,
        "encryptionKey": "12345678901234567890123456789012",
        "initializingVector": ""
    },
    "compression": 3,
    "filter": {
        "devIdentifiers": [
            {
                "pid": "100076",
                "deviceMap": {"10000156":"victor-project-mqtt_1"},
                "valueDescriptorIdentifiers": [

                ]
            }
        ]
    }
}
实例类型为规则引擎配置类型(type=2)、转发方式为MQTT(addressType=2)时如下,其他转发方式只需更改addressType和addressConfigId即可:
{
    "name": "rule_router1",
    "env": 1,
    "type": 2,
    "addressType": 2,
    "addressConfigId": 13392,
    "format": 3,
    "encryption": {
        "encryptionAlgorithm": 1,
        "encryptionKey": "",
        "initializingVector": ""
    },
    "compression": 1
}
实例类型为数据分析配置类型(type=3)、转发方式为MYSQL(addressType=4)时如下,其他转发方式只需更改addressType和addressConfigId即可:
{
    "name": "analyze_router1",
    "env": 1,
    "type": 3,
    "addressType": 4,
    "addressConfigId": 13395,
    "format": 1
}

cURL example:

实例类型为标准数据转发类型(type=1)、转发方式为REST(addressType=1)时如下,其他转发方式只需更改addressType和addressConfigId即可:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers?accessKeyId={accessKeyId}&signatureNonce=809&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "zs_test",
    "env": 2,
    "type": 1,
    "addressType": 4,
    "addressConfigId": 36,
    "format": 1,
    "encryption": {
        "encryptionAlgorithm": 2,
        "encryptionKey": "12345678901234567890123456789012",
        "initializingVector": ""
    },
    "compression": 3,
    "filter": {
        "devIdentifiers": [
            {
                "pid": "100076",
                "deviceMap": {"10000156":"victor-project-mqtt_1"},
                "valueDescriptorIdentifiers": [

                ]
            }
        ]
    }
}'
实例类型为规则引擎配置类型(type=2)、转发方式为MQTT(addressType=2)时如下,其他转发方式只需更改addressType和addressConfigId即可:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers?accessKeyId={accessKeyId}&signatureNonce=726&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "rule_router1",
    "env": 1,
    "type": 2,
    "addressType": 2,
    "addressConfigId": 13392,
    "format": 3,
    "encryption": {
        "encryptionAlgorithm": 1,
        "encryptionKey": "",
        "initializingVector": ""
    },
    "compression": 1
}'
实例类型为数据分析配置类型(type=3)、转发方式为MYSQL(addressType=4)时如下,其他转发方式只需更改addressType和addressConfigId即可:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers?accessKeyId={accessKeyId}&signatureNonce=14&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "analyze_router1",
    "env": 1,
    "type": 3,
    "addressType": 4,
    "addressConfigId": 13395,
    "format": 1
}'

Response:

Name Type Description
data int 新建路由实例的ID

Response example:

{
    "data": 10261,
    "success": true,
    "code": 0,
    "msg": null
}

9.1.2获取路由实例

功能描述:查询物联网平台中的路由实例, 返回该消路由的详细信息。

GET  /api/v1/routers/{id}

Path:

Name Type Description Required
id int 路由实例ID Yes

cURL example:

curl --location --request GET '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10256?accessKeyId={accessKeyId}&signatureNonce=529&signature={signature}' \
--header 'platform: 1'

Response data:

Name Type Description
id string 路由实例ID
addressConfigId int 目的地址配置ID
addressConfigName string 空(暂不提供值)
addressType int 目的地址配置类型,具体含义可参考创建目的地址配置
compression int 数据压缩方式
created long 创建时间,单位毫秒
encryption struct 加密规则结构体
env int 执行环境,1:云端
filter struct 过滤器结构体
format int 数据格式
modified long 修改时间,单位毫秒
name string 实例名称
type int 实例类型
status int 启停状态(1停用,2启用)

Response data filter结构体:

Name Type Description
devIdentifiers struct[] 过滤规则结构体

Response data filter devIdentifiers结构体:

Name Type Description
pid string 产品ID的字符串
productName string 产品名
protocolType int 产品协议类型
deviceMap map key是deviceId,value设备名称
deviceName string 设备名
valueDescriptorIdentifiers string[] 需过滤的属性名(必须首先设置设备ID)
identifierType int 标识符类型(0:属性、1:事件)

Response data encryption结构体:

Name Type Description
encryptionAlgorithm int 加密方式(1:NONE / 2:AES), 目前只支持AES, NONE表示不加密。
encryptionKey string AES加密Key
initializingVector string 初始化向量

Response example:

{
    "data": {
        "id": 10256,
        "addressConfigId": 13391,
        "addressConfigName": "",
        "addressType": 1,
        "compression": 3,
        "created": 1588908145384,
        "encryption": {
            "encryptionAlgorithm": 2,
            "encryptionKey": "12345678901234567890123456789012",
            "initializingVector": null
        },
        "env": 1,
        "filter": {
            "devIdentifiers": [
                {
                    "deviceMap": {"10000156":"victor-project-mqtt_1"},
                    "deviceName": "devSSS11",
                    "pid": "100013",
                    "productName": "dafadfadfad",
                    "protocolType": 3,
                    "identifierType": 0,
                    "valueDescriptorIdentifiers": [
                        "xxxxaaa"
                    ]
                }
            ]
        },
        "format": 1,
        "modified": 1588908145384,
        "name": "standard_router",
        "type": 1,
        "userId": "bb5f2d0f4fad4d2ab1897d3fdca7c5c3",
        "status": 1,
        "platform": 1,
        "ownerName": null
    },
    "success": true,
    "code": 0,
    "msg": null
}

9.1.3修改路由实例

功能描述:修改物联网平台中指定的路由实例。

PATCH  /api/v1/routers/{id}

Path:

Name Type Description Required
id int 路由实例ID Yes

Body:

Name Type Description Required
name string 客户端名称 No
type int 客户端类型(1:标准数据转发/2:规则引擎配置类型/3:数据分析配置类型),规则引擎和数据分析配置类型表示此路由实例将被规则引擎和数据分析使用。 No
addressConfigId int 目的地配置ID, 参考 目的地配置 No
format string 数据格式(1:JSON / 2:XML/ 3:SERIALIZED / 4:CSV),MYSQL和ONENET的转发方式仅支持JSON No
encryption struct 加密规则结构体,详情见下方表格(MYSQL和ONENET的转发方式不支持加密) No
compression int 数据压缩方式(1:NONE / 2:GZIP / 3:ZIP),MYSQL和ONENET的转发方式不支持压缩 No
filter struct 过滤器结构体,只支持type为标准数据转发类型。 No

Body filter结构体:

Name Type Description Required
devIdentifiers struct[] 过滤规则结构体 Yes

Body filter devIdentifiers结构体:

Name Type Description Required
pid string 产品ID的字符串 Yes
deviceMap map key是deviceId,value设备名称 Yes
valueDescriptorIdentifiers string[] 需过滤的属性名(必须首先设置设备ID) No(无值则默认为全部属性)
identifierType int 标识符类型(0:属性、1:事件) No(无该字段,则默认为0)

Body encryption结构体:

Name Type Description Required
encryptionAlgorithm int 加密方式(1:NONE / 2:AES), 目前只支持AES, NONE表示不加密。 Yes
encryptionKey string AES加密Key No,AES加密时必须
initializingVector string 初始化向量 No

Body example:

可以参考新增路由实例获取更多例子信息:
{
    "name": "standard_router11",
    "type": 1,
    "addressConfigId": 13391,
    "format": 1,
    "encryption": {
        "encryptionAlgorithm": 2,
        "encryptionKey": "12345678901234567890123456789012",
        "initializingVector": ""
    },
    "compression": 3,
    "filter": {
        "devIdentifiers": [
            {
                "pid": "100013",
                "deviceMap": {"10000156":"victor-project-mqtt_1"},
                "valueDescriptorIdentifiers": [
                    "xxxxaaa"
                ]
            }
        ]
    }
}

cURL example:

curl --location --request PATCH '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10257?accessKeyId={accessKeyId}&signatureNonce=719&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "standard_router11",
    "type": 1,
    "addressConfigId": 13391,
    "format": 1,
    "encryption": {
        "encryptionAlgorithm": 2,
        "encryptionKey": "12345678901234567890123456789012",
        "initializingVector": ""
    },
    "compression": 3,
    "filter": {
        "devIdentifiers": [
            {
                "pid": "100013",
                "deviceMap": {"10000156":"victor-project-mqtt_1"},
                "valueDescriptorIdentifiers": [
                    "xxxxaaa"
                ]
            }
        ]
    }
}'

Response:

Name Type Description
data int 修改路由实例的ID

Response example:

{
    "data": 10257,
    "success": true,
    "code": 0,
    "msg": null
}

9.1.4删除路由实例

功能描述:删除指定的客户端。

DELETE  /api/v1/routers/{id}

Path:

Name Type Description Required
id int 路由实例ID Yes

cURL example:

curl --location --request DELETE '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10256?accessKeyId={accessKeyId}&signatureNonce=529&signature={signature}' \
--header 'platform: 1'

Response example:

{
    "data": null,
    "success": true,
    "code": 0,
    "msg": null
}

9.1.5分页查询路由实例

功能描述:根据名称模糊查询物联网平台中的路由实例,指定当前分页和分页大小,返回 客户端列表和数量。

GET  /api/v1/routers

Query:

Name Type Description Required
type int 客户端类型(1:标准数据转发类型/ 2:规则引擎配置类型/ 3:数据分析配置类型),规则引擎和数据分析配置类型表示此路由实例将被规则引擎和数据分析使用。 No
pageSize int 分页大小 Yes
currentPage int 页码 Yes
name string 客户端名称 No
address string 目的地配置名称 No
addressType int 转发方式(1:REST / 2:MQTT / 3:KAFKA / 4:MYSQL / 5:保留值 / 6:ONENET / 7:SQL Server / 10:数据湖KAFKA) No

cURL example:

curl --location --request GET '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers?accessKeyId={accessKeyId}&signatureNonce=266&signature={signature}&currentPage=1&pageSize=5&name=ana&type=3&address=mysql2' \
--header 'platform: 1' \
--header 'projectId: {projectId}'

Response data:

Name Type Description
currentPage int 当前页数
pageSize int 每页数量
totalCount int 符合条件的总数量
totalPage int 符合条件的总页数
content struct[] 本页数据列表

Response data content:

Name Type Description
id string 路由实例ID
addressConfigId int 目的地址配置ID
addressConfigName string 空(暂不提供值)
addressType int 目的地址配置类型,具体含义可参考创建目的地址配置
compression int 数据压缩方式
created long 创建时间,单位毫秒
encryption struct 加密规则结构体
env int 执行环境:1-云端
filter struct 过滤器结构体
format int 数据格式
modified long 修改时间,单位毫秒
name string 实例名称
type int 实例类型
status int 启停状态(1停用,2启用)

Response data content filter结构体:

Name Type Description
devIdentifiers struct[] 过滤规则结构体

Response data content filter devIdentifiers结构体:

Name Type Description
pid string 产品ID的字符串
productName string 产品名
protocolType int 产品协议类型
deviceMap map key是deviceId,value设备名称
deviceName string 设备名
valueDescriptorIdentifiers string[] 需过滤的属性名(必须首先设置设备ID)
identifierType int 标识符类型(0:属性、1:事件)

Response data content encryption结构体:

Name Type Description
encryptionAlgorithm int 加密方式(1:NONE / 2:AES), 目前只支持AES, NONE表示不加密。
encryptionKey string AES加密Key
initializingVector string 初始化向量
{
    "data": {
        "currentPage": 1,
        "pageSize": 5,
        "totalCount": 2,
        "totalPage": 1,
        "content": [
            {
                "id": 10265,
                "addressConfigId": 13395,
                "addressConfigName": "mysql2",
                "addressType": 4,
                "compression": 1,
                "created": 1588918697827,
                "encryption": {
                    "encryptionAlgorithm": 1,
                    "encryptionKey": null,
                    "initializingVector": null
                },
                "env": 1,
                "filter": {
                    "devIdentifiers": null
                },
                "format": 1,
                "modified": 1588918697827,
                "name": "analyze_router1",
                "type": 3,
                "userId": "bb5f2d0f4fad4d2ab1897d3fdca7c5c3",
                "status": 1,
                "platform": 1,
                "ownerName": null
            },
            {
                "id": 10264,
                "addressConfigId": 13395,
                "addressConfigName": "mysql2",
                "addressType": 4,
                "compression": 1,
                "created": 1588918634775,
                "encryption": {
                    "encryptionAlgorithm": 1,
                    "encryptionKey": null,
                    "initializingVector": null
                },
                "env": 1,
                "filter": {
                    "devIdentifiers": null
                },
                "format": 1,
                "modified": 1588918634775,
                "name": "analyze_router",
                "type": 3,
                "userId": "bb5f2d0f4fad4d2ab1897d3fdca7c5c3",
                "status": 1,
                "platform": 1,
                "ownerName": null
            }
        ]
    },
    "success": true,
    "code": 0,
    "msg": null
}

9.1.6启用路由实例

功能描述:启用物联网中指定的路由实例,路由实例启用后才能实现数据转发。

PUT  /api/v1/routers/{id}/enable

Path:

Name Type Description Required
id int 路由实例ID Yes

cURL example:

curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10256/enable?accessKeyId={accessKeyId}&signatureNonce=529&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}'

Response:

Name Type Description
data int 启用路由实例的ID

Response example:

{
    "data": 10256,
    "success": true,
    "code": 0,
    "msg": null
}

9.1.7禁用路由实例

功能描述:禁用物联网中的路由实例。

PUT  /api/v1/routers/{id}/disable

Path:

Name Type Description Required
id int 路由实例ID Yes

cURL example:

curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10256/disable?accessKeyId={accessKeyId}&signatureNonce=529&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}'

Response:

Name Type Description
data int 启用路由实例的ID

Response example:

{
    "data": 10256,
    "success": true,
    "code": 0,
    "msg": null
}

9.1.8批量启用云端的路由实例

功能描述:批量启用指定的云端的路由实例,路由实例启用后才能实现数据转发。

PUT  /api/v1/routers/enable

Body:

Name Type Description Required
list int[] 路由实例的ID数组 Yes

Body Example:

{
    "list": [
        10258,
        10259
    ]
}

cURL example:

curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/enable?accessKeyId={accessKeyId}&signatureNonce=322&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "list": [
        10258,
        10259
    ]
}'

Response example:

{
    "data": null,
    "success": true,
    "code": 0,
    "msg": null
}

9.1.9批量禁用云端的路由实例

功能描述:批量禁用指定的云端的路由实例。

PUT  /api/v1/routers/disable

Body:

Name Type Description Required
list int[] 路由实例的ID数组 Yes

Body Example:

{
    "list": [
        10258,
        10259
    ]
}

cURL example:

curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/disable?accessKeyId={accessKeyId}&signatureNonce=322&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "list": [
        10258,
        10259
    ]
}'

Response example:

{
    "data": null,
    "success": true,
    "code": 0,
    "msg": null
}

results matching ""

    No results matching ""